// 导入数据库操作模块
const db = require("../db/index");
const { v4: uuidv4 } = require('uuid');

//查询真皮材料
exports.getZhenpiList = (req, res) => {
    console.log("触发了材料接口")
    console.log(req.body)
    if(Object.keys(req.body).length === 0){
        console.log("req.body是{}")
        const query = 'SELECT * FROM zhenpiList';

        db.query(query, (err, results) => { // 将 id 作为查询参数传递
            if (err) {
                console.error('查询失败:', err);
                return res.status(500).send('数据库查询失败');
            }
    
            //     // 遍历查询结果并转换 userlist 字段
            //    results.forEach(result => {
            //        if (result.userlist) {
            //            try {
            //                result.userlist = JSON.parse(result.userlist);
            //            } catch (parseErr) {
            //                console.error('userlist 解析失败:', parseErr);
            //                // 你可以根据需要决定在解析失败时如何处理，例如将 userlist 设置为 null
            //                result.userlist = null;
            //            }
            //        }
            //    });
            
    
            // 返回查询结果
            res.status(200).json(results);
            console.log(results)
    }
    );
    }else{
        console.log("触发了材料查询接口")
        console.log(req.body)
        const query = 'SELECT * FROM zhenpiList WHERE idzhenpiList like ? AND name LIKE ?';

        const idzhenpiList = '%' + req.body.idzhenpiList + '%';
        // const name = '%' + req.body.name + '%';
       const name = '%' + req.body.name.replace(/\*/g, '%') + '%'
        db.query(query,[idzhenpiList,name] ,(err, results) => { // 将 id 作为查询参数传递
            if (err) {
                console.error('查询失败:', err);
                return res.status(500).send('数据库查询失败');
            }
    
            //     // 遍历查询结果并转换 userlist 字段
            //    results.forEach(result => {
            //        if (result.userlist) {
            //            try {
            //                result.userlist = JSON.parse(result.userlist);
            //            } catch (parseErr) {
            //                console.error('userlist 解析失败:', parseErr);
            //                // 你可以根据需要决定在解析失败时如何处理，例如将 userlist 设置为 null
            //                result.userlist = null;
            //            }
            //        }
            //    });
            
    
            // 返回查询结果
            res.status(200).json(results);
            console.log(results,"查询结果")
    
        });
    }


};
//添加真皮材料
exports.addzhenpiList = (req, res) => {
    console.log(req.body)
    console.log("请求了添加真皮材料接口")
    const userInfo = req.body
    const query = 'INSERT INTO zhenpiList (idzhenpiList,name,color,yuancaiCount,hangfengCount,cixiuCount,yanshouCount,createTime) VALUES(?,?,?,?,?,?,?,?)'
    db.query(query,[userInfo.idzhenpiList,userInfo.name,userInfo.color,0,0,0,0,userInfo.createTime],(err,results)=>{
        if (err) {
            console.error('查询失败:', err);
            return res.status(500).send('数据库查询失败');
        }
        // 返回查询结果
        res.status(200).json(results);
        console.log(results)
    })
};
//删除真皮材料
exports.deletezhenpiList = (req, res) => {
    console.log(req.body)
    console.log("请求了删除真皮接口")
    const userInfo = req.body
    const query = 'DELETE FROM zhenpiList WHERE idzhenpiList=?'
    db.query(query,[userInfo.idzhenpiList],(err,results)=>{
        if (err) {
            console.error('查询失败:', err);
            return res.status(500).send('数据库查询失败');
        }
        // 返回查询结果
        res.status(200).json(results);
        console.log(results)
    })
};

//编辑真皮材料
exports.editzhenpiList = (req, res) => {
    console.log(req.body)
    console.log("请求了编辑真皮接口")
    const userInfo = req.body
    const query = 'UPDATE zhenpiList SET name=?,idzhenpiList=?,color=? WHERE  idzhenpiList=?'
    db.query(query,[userInfo.name,userInfo.idzhenpiList,userInfo.color,userInfo.idzhenpiList],(err,results)=>{
        if (err) {
            console.error('查询失败:', err);
            return res.status(500).send('数据库查询失败');
        }
        // 返回查询结果
        res.status(200).json(results);
        console.log(results)
    })
};

// 真皮材料出入库
// 表名 zhenpichurukulist
// 字段 idzhenpichurukuList idzhenpiList name count type color createTime
// 真皮材料出入库
exports.addzhenpiChuruList = (req, res) => {
    console.log("触发了材料接口");
    const userInfo = req.body;
    console.log(userInfo);
    const insertQuery = 'INSERT INTO zhenpichurukulist (idzhenpiList, name, count, type, color, createTime) VALUES (?, ?, ?, ?, ?, ?)';
    const updateQueryAdd = 'UPDATE zhenpiList SET yuancaiCount = yuancaiCount + ? WHERE idzhenpiList = ?';
    const updateQuerySubtract = 'UPDATE zhenpiList SET yuancaiCount = yuancaiCount - ? WHERE idzhenpiList = ?';

    // 用于存储所有插入和更新操作的Promise
    const transactionPromises = userInfo.map(item => {
        return new Promise((resolve, reject) => {
            db.query(insertQuery, [item.idzhenpiList, item.name, item.count, item.type, item.color, item.createTime], (err, results) => {
                if (err) {
                    console.error('插入失败:', err);
                    reject(err);
                } else {
                    const updateQuery = item.type === 0 ? updateQueryAdd : updateQuerySubtract;
                    db.query(updateQuery, [item.count, item.idzhenpiList], (updateErr, updateResults) => {
                        if (updateErr) {
                            console.error('更新失败:', updateErr);
                            reject(updateErr);
                        } else {
                            resolve({ insertResults: results, updateResults: updateResults });
                        }
                    });
                }
            });
        });
    });

    // 等待所有操作完成
    Promise.all(transactionPromises)
        .then(results => {
            res.status(200).json(results);
            console.log(results);
        })
        .catch(err => {
            res.status(500).send('数据库查询失败');
            console.error(err);
        });
};


//查询订单列表
// 表名 zhenpichurukulist
// 字段 idzhenpichurukuList idzhenpiList name count type color createTime
exports.getzhenpiOrderList = (req, res) => {
    console.log("触发了材料接口")

    // const query = 'SELECT * FROM zhenpiOrderList WHERE state IN ("1","2") ORDER BY id DESC' ;

    
    // db.query(query, (err, results) => { // 将 id 作为查询参数传递
    //     if (err) {
    //         console.error('查询失败:', err);
    //         return res.status(500).send('数据库查询失败');
    //     }

    //     //    返回数据
    //        res.status(200).json(results);

    // });

    if(Object.keys(req.body).length === 0){
        console.log("req.body是{}")
        const query = 'SELECT * FROM zhenpiOrderList WHERE state IN ("1","2") ORDER BY id DESC' ;

        db.query(query, (err, results) => { // 将 id 作为查询参数传递
            if (err) {
                console.error('查询失败:', err);
                return res.status(500).send('数据库查询失败');
            }
    
            //     // 遍历查询结果并转换 userlist 字段
            //    results.forEach(result => {
            //        if (result.userlist) {
            //            try {
            //                result.userlist = JSON.parse(result.userlist);
            //            } catch (parseErr) {
            //                console.error('userlist 解析失败:', parseErr);
            //                // 你可以根据需要决定在解析失败时如何处理，例如将 userlist 设置为 null
            //                result.userlist = null;
            //            }
            //        }
            //    });
            
    
            // 返回查询结果
            res.status(200).json(results);
            console.log(results)
    }
    );
    }else{
        console.log("触发订单查询接口")
        console.log(req.body)
        let query = 'SELECT * FROM zhenpiOrderList WHERE idzhenpiOrderList LIKE ? AND name LIKE ?';
        const idzhenpiOrderList = '%' + ((req.body.idzhenpiOrderList || '').replace(/\*/g, '%')) + '%';
        const name = '%' + ((req.body.name || '').replace(/\*/g, '%')) + '%';
        
        let queryParams = [idzhenpiOrderList, name];
        
        // 检查 state 参数
        if (req.body.state) {
            query += ' AND state LIKE ?';
            const state = '%' + req.body.state + '%';
            queryParams.push(state);
        } else {
            query += ' AND state IN (?, ?)';
            queryParams.push('1', '2');
        }
        db.query(query, queryParams,(err, results) => { // 将 id 作为查询参数传递
            if (err) {
                console.error('查询失败:', err);
                return res.status(500).send('数据库查询失败');
            }
    
            //     // 遍历查询结果并转换 userlist 字段
            //    results.forEach(result => {
            //        if (result.userlist) {
            //            try {
            //                result.userlist = JSON.parse(result.userlist);
            //            } catch (parseErr) {
            //                console.error('userlist 解析失败:', parseErr);
            //                // 你可以根据需要决定在解析失败时如何处理，例如将 userlist 设置为 null
            //                result.userlist = null;
            //            }
            //        }
            //    });
            
    
            // 返回查询结果
            res.status(200).json(results);
            console.log(results,"查询结果")
    
        });
    }
    
};



// 表名 zhenpiOrderList
// 字段 idzhenpiOrderList idzhenpiList name zhenpiyuancai state hangfengChanchu hangfengbaofei cixiuchanchu cixiubaofei
// 添加真皮订单
exports.addzhenpiOrderList = (req, res) => {
    console.log("触发添加真皮订单接口")
    console.log(req.body)
    const idzhenpiOrderList = uuidv4()
    const info = req.body



    // 标志变量，用于跟踪是否已发送响应
    let responseSent = false;
    // 记录插入操作的计数器
    let processedCount = 0;
    const totalItems = info.length;

    info.forEach(item => {
        item.idzhenpiOrderList = idzhenpiOrderList;
        const query = 'INSERT INTO zhenpiOrderList (idzhenpiOrderList, idzhenpiList, name, zhenpiyuancai, state, hangfengChanchu, hangfengbaofei, cixiuchanchu, cixiubaofei) VALUES(?,?,?,?,?,?,?,?,?)';

        db.query(query, [item.idzhenpiOrderList, item.idzhenpiList, item.name, item.count, 1, 0, 0, 0, 0], (err, results) => {
            processedCount++;

            if (err) {
                console.error('查询失败:', err);
                if (!responseSent) {
                    responseSent = true;
                    return res.status(500).send('数据库查询失败');
                }
            }

            if (processedCount === totalItems && !responseSent) {
                responseSent = true;
                res.status(200).json({ message: '所有记录已成功插入' });
                console.log(results);
            }
        });
    });
};
// exports.addzhenpiOrderList = (req, res) => {
//     console.log("触发添加真皮订单接口");
//     console.log(req.body);

//     const idzhenpiOrderList = uuidv4();
//     const info = req.body;
//     const last = info[info.length - 1];
//     last.idzhenpiOrderList = idzhenpiOrderList;

//     // 插入最后一项数据
//     const insertLastQuery = 'INSERT INTO zhenpiOrderList (idzhenpiOrderList, name, state) VALUES (?, ?, ?)';

//     // 使用 Promise 来处理异步操作
//     const insertLastPromise = new Promise((resolve, reject) => {
//         db.query(insertLastQuery, [last.idzhenpiOrderList, last.name, last.state], (err, results) => {
//             if (err) {
//                 console.error('查询失败:', err);
//                 return reject('数据库查询失败');
//             }
//             resolve(results);
//         });
//     });

//     // 处理 info 中的其他项
//     const insertInfoPromises = info.slice(0, -1).map(item => {
//         const newId = uuidv4();
//         item.idzhenpiOrderList = newId;
//         const insertQuery = 'INSERT INTO zhenpiOrderList (idzhenpiOrderList, idzhenpiList, name, zhenpiyuancai, state, hangfengChanchu, hangfengbaofei, cixiuchanchu, cixiubaofei, parentId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';

//         return new Promise((resolve, reject) => {
//             db.query(insertQuery, [item.idzhenpiOrderList, item.idzhenpiList, item.name, item.count, 1, 0, 0, 0, 0, last.idzhenpiOrderList], (err, results) => {
//                 if (err) {
//                     console.error('查询失败:', err);
//                     return reject('数据库查询失败');
//                 }
//                 resolve(results);
//             });
//         });
//     });

//     // 等待所有操作完成
//     Promise.all([insertLastPromise, ...insertInfoPromises])
//         .then(results => {
//             // 所有插入操作完成后发送响应
//             res.status(200).json({ success: true, results });
//             console.log('所有插入操作完成:', results);
//         })
//         .catch(err => {
//             // 处理错误
//             res.status(500).send(err);
//         });
// };
// 修改订单

//修改真皮订单
exports.editzhenpiOrderList = (req, res) => {
    console.log("触发修改订单接口")
    console.log(req.body)

    const info = req.body
    // 标志变量，用于跟踪是否已发送响应
    let responseSent = false;
    // 记录插入操作的计数器
    let processedCount = 0;
    const totalItems = info.length;

    info.forEach(item => {
        const query = 'UPDATE zhenpiOrderList SET state=?, hangfengChanchu=?, hangfengbaofei=?, cixiuchanchu=?, cixiubaofei=? WHERE id=?';

        db.query(query, [item.state, item.hangfengChanchu, item.hangfengbaofei, item.cixiuchanchu,item.cixiubaofei,item.id], (err, results) => {
            processedCount++;

            if (err) {
                console.error('查询失败:', err);
                if (!responseSent) {
                    responseSent = true;
                    return res.status(500).send('数据库查询失败');
                }
            }

            if (processedCount === totalItems && !responseSent) {
                responseSent = true;
                res.status(200).json({ message: '所有记录已成功插入' });
                console.log(results);
            }
        });
    });
};

